using namespace std;


namespace MemoryManagement
{

	class MyMemoryManagement
	{
	public: 

		// overload new and delete
		static __declspec(dllexport) void *operator new(unsigned int size);
		static __declspec(dllexport) void *operator new[](unsigned int size);
		static __declspec(dllexport) void *operator new(unsigned int size, void *p);

		static __declspec(dllexport) void operator delete(void *p);
		static __declspec(dllexport) void operator delete[](void *p);
		
		// stack allocator
		static __declspec(dllexport) void *allocate(unsigned int size);
		static __declspec(dllexport) void deallocate(void *pt);

		static __declspec(dllexport) int getMaker();
		static __declspec(dllexport) void freeToMarker();
		static __declspec(dllexport) void clear();

	};
	
}